{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Chapter 3 - Classification**\n",
    "\n",
    "This Notebook contains all the sample code and solutions to the exercises in chapter 3.\n",
    "\n",
    "# Setup\n",
    "\n",
    "First, let's import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures. We also check that Python 3.5 or later is installed (although Python 2.x may work, it is deprecated so we strongly recommend you use Python 3 instead), as well as Scikit-Learn >= 0.20."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "iscolab False\n",
      "iskaggle False\n"
     ]
    }
   ],
   "source": [
    "# Python >= 3.5 is required\n",
    "import sys\n",
    "assert sys.version_info >= (3, 5)\n",
    "# Is this Notebook running on Colab or Kaggle?\n",
    "IS_COLAB = \"google.colab\" in sys.modules\n",
    "IS_KAGGLE = \"kaggle_secrets\" in sys.modules\n",
    "\n",
    "# Scikit-Learn >= 0.20 is required\n",
    "import sklearn\n",
    "assert sklearn.__version__ >= \"0.20\"\n",
    "\n",
    "# Common imports\n",
    "import numpy as np\n",
    "import os\n",
    "\n",
    "# to make this notebook's output stable across runs\n",
    "np.random.seed(42)\n",
    "\n",
    "# To plot pretty figures\n",
    "%matplotlib inline\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "mpl.rc('axes', labelsize=14)\n",
    "mpl.rc('xtick', labelsize=12)\n",
    "mpl.rc('ytick', labelsize=12)\n",
    "\n",
    "# Where to save the figures\n",
    "PROJECT_ROOT_DIR = \".\"\n",
    "CHAPTER_ID = \"classification\"\n",
    "IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID)\n",
    "os.makedirs(IMAGES_PATH, exist_ok=True)\n",
    "\n",
    "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n",
    "    path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n",
    "    print(\"Save figure\", fig_id)\n",
    "    if tight_layout:\n",
    "        plt.tight_layout()\n",
    "    plt.savefig(path, format=fig_extension, dpi=resolution)\n",
    "\n",
    "print(\"iscolab\", IS_COLAB)\n",
    "print(\"iskaggle\", IS_KAGGLE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# MNIST\n",
    "\n",
    "**Warning**: since Scikit-Learn 0.24, `fetch_openml()` returns a Pandas `DataFrame` by default. To avoid this and keep the same code as in the book, we use `as_frame=False`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['data', 'target', 'frame', 'categories', 'feature_names', 'target_names', 'DESCR', 'details', 'url'])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_openml\n",
    "mnist = fetch_openml('mnist_784', version=1, as_frame=False)\n",
    "mnist.keys()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X,y = mnist[\"data\"], mnist[\"target\"]\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "784"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "28*28"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Save figure some_digit_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdUAAAHWCAYAAAAhLRNZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAK+ElEQVR4nO3du2seZByG4SStx1CtblWchS4eUDoIHkGn6ioOolMFtUuLCBkcBd20buIkuhQzdFEs6CCCdLBUBTsERBx0KW1BB0U+/wMN/O72M8117c+Xl5Dkzju9q4vFYrECAIytLfsAAHCtEFUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABDZu+wDwE7x999/j/aXLl2KTrIcJ06cGO3/+OOP0f78+fOj/XvvvTfaHz9+fLT/+OOPR/uVlZWVG2+8cbR//fXXR/s33nhjtN8N3FQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIj3VNm2n3/+ebT/888/R/uvv/56tP/qq69G+4sXL472J0+eHO13u7vuumu0f/XVV0f7zc3N0X7fvn2j/crKyso999wz2j/yyCPjM/Dv3FQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgMjqYrFYLPsQXHnffvvt+DMef/zx0f7SpUvjM7Bz7dmzZ7T/4IMPRvv19fXRfuqOO+4Yf8Ztt9022t99993jM/Dv3FQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkDEI+W7xIULF8afcejQodF+a2trfIbdbPr9nz5w/cUXX4z2119//WjvkXt2AjdVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASCyd9kH4Oq4/fbbx5/x9ttvj/anTp0a7e+7777R/ujRo6P91L333jvanz59erRfX18f7b///vvR/p133hntYSdwUwWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIquLxWKx7EOwO1y+fHm037dv32h/5MiR0f79998f7T/88MPR/rnnnhvtgSvPTRUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiOxd9gHYPW655Zalfv1bb711qV9/+h7rs88+O9qvrfkfGq40v2UAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQGR1sVgsln0IuBp+//330f7w4cOj/Zdffjnaf/rpp6P9k08+OdoD/81NFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIeE8Vtmlra2u0v//++0f7/fv3j/aPPfbYaP/AAw+M9i+//PJov7q6OtrD1eCmCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBEvKcKV8nm5uZo/+KLL472ly9fHu2n3nzzzdH++eefH+0PHDgw2sN2uKkCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABHvqcIO8d133432x44dG+1Pnz492k+99NJLo/3GxsZof+edd4727A5uqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJAxHuqsEtcvHhxtD916tRo/8ILL4z20z9VTzzxxGj/+eefj/bsDm6qABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkDEe6rAVXHDDTeM9n/99ddof9111432n3322Wj/6KOPjvbsDG6qABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBk77IPAGzPuXPnRvuTJ0+O9mfOnBntp++hTh08eHC0f/jhh6OTcC1zUwWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIt5ThW06f/78aP/uu++O9p988slo/+uvv472y7Z37+zP1YEDB0b7tTV3EP6bnxIAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBIOI9VXaM6XugH3300Wh/4sSJ0f6nn34a7Xe6Bx98cLTf2NgY7Z9++unRHrbDTRUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiHhPlW377bffRvsffvhhtH/llVdG+x9//HG03+kOHTo02r/22muj/TPPPDPar625A/D/56cUACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBEPFK+Q1y4cGG0P3LkyPgMZ8+eHe23trbGZ9jJHnroodH+2LFjo/1TTz012t90002jPewGbqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQMR7qtv0zTffjPZvvfXWaH/mzJnR/pdffhntrwU333zzaH/06NHRfmNjY7RfX18f7YErz00VACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIh4T3WbNjc3l7r/Pzh48OBof/jw4dF+z549o/3x48dH+/3794/2wLXPTRUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiKwuFovFsg8BANcCN1UAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIiIKgBERBUAIqIKABFRBYCIqAJARFQBICKqABARVQCIiCoAREQVACKiCgARUQWAiKgCQERUASAiqgAQEVUAiIgqAEREFQAiogoAEVEFgIioAkBEVAEgIqoAEBFVAIj8AyDoBVX499AvAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "some_digit = X[0]\n",
    "some_digit_image = some_digit.reshape(28, 28)\n",
    "plt.imshow(some_digit_image, cmap=\"binary\")\n",
    "plt.axis(\"off\")\n",
    "\n",
    "save_fig(\"some_digit_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'5'"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "y = y.astype(np.uint8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_digit(data):\n",
    "    image = data.reshape(28, 28)\n",
    "    plt.imshow(image, cmap=mpl.cm.binary, interpolation=\"nearest\")\n",
    "    plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Extra\n",
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    # This is equivalent to n_rows = ceil(len(instances) / images_per_row):\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    # append empty images to fill the end of the grid, if needed:\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    padded_instances = np.concatenate([instances, np.zeros((n_empty, size * size))], axis = 0)\n",
    "    # reshape the array so it's organized as a grid containing 28*28 images:\n",
    "    image_grid = padded_instances.reshape((n_rows, images_per_row, size, size))\n",
    "    # Combine axes 0 and 2 (vertical image grid axis, and vertical image axis),\n",
    "    # and axes 1 and 3 (horizontal axes). We first need to move the axes that we\n",
    "    # want to combine next to each other, using transpose(), and only then we can reshape:\n",
    "    big_image = image_grid.transpose(0, 2, 1, 3).reshape(n_rows * size, images_per_row * size)\n",
    "    # Now that we have a big image, we just need to show it:\n",
    "    plt.imshow(big_image, cmap = mpl.cm.binary, **options)\n",
    "    plt.axis(\"off\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Save figure more_digits_plot\n"
     ]
    },
    {
     "data": {
      "image/png": "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tmyZ3+z7Xv7555+W9Xit36NjxowJZdhRx508AAAAAPAQLvIAAAAAwEM8U66pypUr5/p5ypQplrUk4OGHH7b87rvvWt68ebPlb7/9NgIjjBwt2dPW6Xp7+cEHH4zqmE6dOmV50KBBfpe54447LL/wwguRHpLL22+/bblIkSKu1xYtWhTStgoXLmy5fv36lsuUKWP55ptvDnWILqNHj7asJXdagpiWvPjii5aDbROf1PQKXpMzZ07LOsXEfffdZ1nbcGu5u36G9XiZK1cuyw899JBrf1rW4vual+nxVssq9VECpcfCGjVqWK5atapl3ylcatasaVnb3Ss9JujnXI9NDRo0sKzTsHhdsGWECxYssNylS5dIDSfu6LnTvHnzLI8fP97y3XffbfmSSy4JeR8ffPCBZZ26BYHp8UHPYdOayZMnW9ap0rT8XL/vPvnkE8uXXXaZZZ1ebP78+Za1dNNxAk/BcODAActXXnmlZf2b0SneYok7eQAAAADgIVzkAQAAAICHeLJc05fevm3ZsqXlRx991LJ2Q9NSDb39qh0OE42WVVx++eUR35+WaD777LOWX3rpJct6m1s7oGbNmjXCowusd+/eMdt3sObOnev3vzdu3DjKI4kd7Rz7zTffJLu8b0fZkiVLhntICaFy5cqW9+/fn+Lt6DFSy10cx13W4vUSYv3eeOaZZyzrcU7dc889lh9//HHL+h2lvxffzoJr1qyxrGWWvXr1sqxlnDNnzrTcrFkzy3fddZffdbWkyVf58uUDvpYoAnV09vXpp59aXr9+vWUtu/c6fXShf//+YduulilTrhkcLbX2pWXi2iXe99ETLxg1apRlPX/Uz6dvl3J/3nzzTcvt27e3vHjx4qDGcf78ectaShsvJZqKO3kAAAAA4CFc5AEAAACAh3iyXFNLWhzHcaZNm2ZZu+doqY3Skozbb789zKOLjWhMgK4ldFqupB2RtFufTtSL1NOOeV5Xq1Yty3/99ZffZbQ0cdy4cREfU1qiXXx9y970Zy9219TJxgcMGGD55Zdftqwl58OGDbPctGlTy1qiqd9LWsa5cuVK176vueYay++8845lLRk6cuSIZe0O/PHHH1vWSX+1dNOXlolt3bo14HKJomPHjpa19Csp2s14xIgR4R5SmhNMeT3cLr448Km6doDUx2S8SM8f77//fstauhkM7Y65bt26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bJnfdVNCyxO1DD4tCVReSIlX7M2bN89yMKWiXi/p1GPv0aNH/S7j2/E4mO8jLdGcPXu25VBLyWNByzV79OhhWbvh7tixI6pjCpd47RYaqNv2+fPnLefNm9fyq6++arlUqVKp2rfuI1C3bX2UKZa4kwcAAAAAHsJFHgAAAAB4SNQmQ9fJb7Xj2jvvvGM5UKcmpeVtOmnvihUrLD/66KNBjSljxoyWM2XK5HeZOXPmWNZyTZ2oOpHpLW8tF9SubtqxkPLMlNHJ4ZWWMSfl999/txyom1OGDBksV6pUKfjBRcnx48ddPwdTolm3bl3Lzz77rOX333/f7/Jnz561rOUxwZZOaOerJ5980nKgzp5aoplI3YEdx3HeeOMNy2+99ZblYH4vqmjRoq6ftWunln1riUuTJk0sv/DCCyHtL57oJLdly5a13KJFi5C24zvp+b+0GyciS8sygynR1MnUf/jhhwiNKv4E87hAvnz5Qt6unnNkzZo15PVjSR+H0dLNqVOnWtZj3pQpU6IzsDDQLtiO4574PZb0e0O7PV900X/vXel3UYMGDcK2b33kKVC3bT2XKF++fNj2HSru5AEAAACAh3CRBwAAAAAeErVyTS0l09yrV6+wbF87ZaaWdpncvn172LYbj7REU7uCaVe3J554IppD8qS9e/da1slkk5roVTsbajmddiFTWkqrJSOJRks0A00Ir52yUkvLsHV/gWi3N+3gGa/02Lh06VLLx44dS3bdq6++2rJ+vrRbXlKd87TzqZZravmKfh8kGi0Z0vfquuuu85uVfu4WLVrkd5natWundoieo2WSWlapgulwGUynzKT2nZZKNJWWeavMmTNbfuqpp0Lerh4HEq1cUw0fPtyydqZMpNLNP/74w292HMfp3r17lEfjX/PmzS1/8803lvWc/ccff/Sbq1atGuHRxQ/u5AEAAACAh3CRBwAAAAAeErVyzURSrlw5y0WKFLGsk4AmMp28+OOPP7ask56HsxwuLdFSQ+0iq51je/bsablfv36WT5486dqWloLNmDHD7/60+148ln0kJdAkovo3pyWaqaETmzuOe3LzWbNmJbu+lhomGu36qaU2W7Zssfyf//zHcsuWLS1r2VT27NmD2p8eXwJN8q3dyRJZoE56119/vWWdeFcnj9ZyTaUdO+OxS26saZlkunTp/C6TklLMYPan5Zpw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REjH0HPH+vXrA27j4jkhFPp8fPPNN5b1te15votxa7k7ks6//DtYeXD9+vUta4fZWMSdPAAAAABwCBd5AAAAAOCQmCrX/Prrry0H695WpkwZyzly5EjR8bRz3PHjxy1r2eimTZsCHrtly5YpOnZq0g5soSywGwpdGLZAgQKWX3zxxZAev3HjRsv3339/otvrQqFIWCgd5Vyk3Xd1UWilJUa6eLeWF3qe79+vdo5TZ8+etfz6669b3r17t+WPP/44sWHHBS1/nTt3rmUtW1Mvv/yyZT0/eJ5vqdaQIUMsDx8+POC+dAH7UqVKhTji2KYl9NoFMxTaec9/MXSlUxS0M6TrtFum5pTatWuXZe1gqGXwerzklIHGq4cfftjyhAkTLOtr+84777S8aNGioPu6++67Lf/xxx+W9XnWEk09j7tIP7N1797dsn4OTehz3SWX/Psx/vz58wEfk5Zeqymhpcie59uJXsV6R03FnTwAAAAAcAgXeQAAAADgkKiXa+pig8Fu3atatWol+Rj79++3rLdj9XjaUS6YRo0aWW7evLllvV0ebbly5bJcpEgRy9o97/PPP7esnSy1VEpLrvLnz5/kcezYsSPRbQoWLGj5gQceSPIxYsWhQ4eiduzs2bNbbtWqVdTGES579+61PHToUMu6WK523P3kk08sa7mKf4e2YCWaderUsawlnlo+vnLlyoDj026H8aZw4cKWZ86cablt27aW58yZY1nLsbp16+azLy1lmTFjhmXtAjdo0CDLrix6riX/H374oeXDhw8H3F67ik6aNMnypZdemuRj6/lazwnRPDfFG+0UqZ0N9T1V30fTEj0/vPLKK5bvvfdey9u3b7fcunVrn8frOVPptBAt2w61O6cLtOR//PjxSX68vs916tTJ8ogRIywvXbrUckqnObnmyJEjlteuXRt0O33e/vOf/4R1TKmJO3kAAAAA4BAu8gAAAADAIVGvM9Syq2AdhG644QbL99xzT6L71IV2Pc/zhg0bFvB4upCxlg7qwuFq8eLFlnfu3Gm5UKFCiY4pnN5//33LefPmtRysDEq7cYbLBx98EPD7WrKlZV7x1K3In5akJVWwBU89L3jJ8vTp0y03bdrUcsaMGZM9jlilix0H686opdP6+tcymB9//DHoMfr06RMwjxs3zrIurL5582bLP//8s+XatWsHPUY80fPi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",
      "text/plain": [
       "<Figure size 900x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9,9))\n",
    "example_images = X[:100]\n",
    "plot_digits(example_images, images_per_row=10)\n",
    "save_fig(\"more_digits_plot\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Training a Binary Classifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_train_5 = (y_train == 5)\n",
    "y_test_5 = (y_test == 5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**: some hyperparameters will have a different default value in future versions of Scikit-Learn, such as `max_iter` and `tol`. To be future-proof, we explicitly set these hyperparameters to their future default values. For simplicity, this is not shown in the book."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "SGDClassifier(random_state=42)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import SGDClassifier\n",
    "sgd_clf = SGDClassifier(max_iter=1000, tol=1e-3, random_state=42)\n",
    "sgd_clf.fit(X_train, y_train_5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.95035, 0.96035, 0.9604 ])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Performance Measures\n",
    "## Measuring Accuracy Using Cross-Validation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9669\n",
      "0.91625\n",
      "0.96785\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.base import clone\n",
    "\n",
    "skfolds = StratifiedKFold(n_splits=3, shuffle=True, random_state=42)\n",
    "\n",
    "for train_index, test_index in skfolds.split(X_train, y_train_5):\n",
    "    clone_clf = clone(sgd_clf)\n",
    "    X_train_folds = X_train[train_index]\n",
    "    y_train_folds = y_train_5[train_index]\n",
    "    X_test_fold = X_train[test_index]\n",
    "    y_test_fold = y_train_5[test_index]\n",
    "\n",
    "    clone_clf.fit(X_train_folds, y_train_folds)\n",
    "    y_pred = clone_clf.predict(X_test_fold)\n",
    "    n_correct = sum(y_pred == y_test_fold)\n",
    "    print(n_correct / len(y_pred))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Note**: `shuffle=True` was omitted by mistake in previous releases of the book."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.base import BaseEstimator\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.91125, 0.90855, 0.90915])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Warning**: this output (and many others in this notebook and oter notebooks) may differ slightly from those in the book. Don't worry, that's okay! There are several reasons for this:\n",
    "* first, Scikit-Learn and other libraries evolve, so some algorithms get tweaked a bit, which may change the exact result you get. If you use the lastest Scikit-Learn version (and in general, you really should), you probably won't be using the exact same version I used when I wrote the book or this notebook, hence the difference. I try to keep this notebook reasonably up to date, but I can't change the numbers on the pages in your copy of the book.\n",
    "* second, many training algorithms are stochastic, meaning they rely on randomness. In principle, it's possible to get consistent outputs from a random number generator by setting the seed (which is why you will see `random_stae=42` or `np.random.seed(42)` pretty often). However, sometimes this does not suffice due to the other factors listed here.\n",
    "* third, if the training algorithm runs across multiple threads (as do some algorithms implemented in C), or across multiple processes (eg., when using the `n_jobs` argument), then the precise order in which operations will run is not always guaranteed, and thus the exact result may vary slightly.\n",
    "* lastly, others things may prevent perfect reproducibility, such as Python dicts and sets whose order is not guaranteed to be stable across sessions, or the order of files in a directory which is also not guaranteed."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Confusion Matrix"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[53892,   687],\n",
       "       [ 1891,  3530]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_5 # pretend we reached perfection\n",
    "confusion_matrix(y_train_5, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Precision and Recall"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8370879772350012"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "precision_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8370879772350012"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm = confusion_matrix(y_train_5, y_train_pred)\n",
    "cm[1,1] / (cm[0, 1] + cm[1,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6511713705958311"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6511713705958311"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm[1,1] / (cm[1, 0] + cm[1, 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7325171197343846"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7325171197343847"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cm[1,1] / (cm[1,1] + (cm[1,0] + cm[0,1]) / 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1: 9:20-22:08\n",
    "2: 10:59-21:32\n",
    "8: 9:20-21:33\n",
    "10: 10:35-21:15\n",
    "12: 9:29-21:39\n",
    "13: 10:14-23:07\n",
    "14: 9:20-21:41\n",
    "15: 9:28-23:30\n",
    "17: 13:35-22:09\n",
    "21: 9:29-21:34\n",
    "23: 9:40-22:22\n",
    "24: 14:31-21:01\n",
    "26: 9:28-21:41\n",
    "29: \n",
    "30: \n",
    "31: 10:00-15:30\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tf2",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
